
import unittest
from question import Question, SingleChoice, MultipleChoice


class TestMultipleChoice(unittest.TestCase):
    def test_add_option(self):

        z = MultipleChoice()


        self.assertFalse(z.add_option("Kaker", 0))
        self.assertFalse(z.add_option("Kaker"))

        self.assertTrue(z.add_option("Kaker", 1))
        self.assertTrue(z.add_option("Brus", 2))
        self.assertTrue(z.add_option("DK", 8))
        self.assertTrue(z.add_option("NA", 9))

        self.assertFalse(z.add_option("Kaker", 5))
        self.assertFalse(z.add_option("Butter", 1))
        self.assertFalse(z.add_option("Svada", 8))

        self.assertTrue( z.set_value("1") )
        self.assertTrue( z.set_value("1-2") )
        self.assertTrue( z.set_value("2-8-9") )
        self.assertTrue( z.set_value("-2-8-9") )
        self.assertTrue( z.set_value("-2-8-9-") )
        self.assertTrue( z.set_value("-9-") )

        self.assertFalse( z.set_value("1-2-7") )
        self.assertFalse( z.set_value("7") )
        self.assertFalse( z.set_value("7-9") )
        self.assertEqual( len(z.values), 0 )

        self.assertTrue( z.set_value("-2-8-9-") )
        self.assertEqual( len(z.values), 3 )

        self.assertTrue( z.set_value("-8-9-") )
        self.assertEqual( len(z.values), 2 )

        self.assertTrue( z.set_value("9") )
        self.assertEqual( len(z.values), 1 )
        print z


class TestSingleChoice(unittest.TestCase):

    def test_add_option(self):
        y = SingleChoice()

        self.assertFalse( y.add_option("Whazz", 3, 1))

        self.assertTrue( y.add_option("General", 1, 24))
        self.assertFalse(y.add_option("Wooth", 4))
        self.assertTrue( y.add_option("DKNA", 98, 99))

        self.assertTrue(  y.set_value(1) )
        self.assertTrue(  y.set_value(2) )
        self.assertTrue(  y.set_value(24) )
        self.assertTrue(  y.set_value(98) )
        self.assertTrue(  y.set_value(99) )

        self.assertFalse( y.set_value(0) )
        self.assertFalse( y.set_value(25) )
        self.assertFalse( y.set_value(97) )
        self.assertFalse( y.set_value(77) )


if __name__ == "__main__":
    unittest.main()
